/**
 * @author Your Name
 * @version 1.0
 *
 * @description <p>DruidPool类用于管理数据库连接池，基于阿里巴巴开源的Druid数据源组件。</p>
 *
 * <p>该类提供初始化数据源、获取连接以及关闭连接的方法。在初始化时，它从类路径下的'application.properties'文件加载数据库连接属性，
 * 然后使用DruidDataSourceFactory创建并配置数据源对象，并从中获取数据库连接实例。
 * 关闭方法则负责关闭已获取的数据库连接，以释放资源。</p>
 */
package com.example.mychess;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.sql.Connection;
import java.util.Properties;

public class DruidPool {

    // 数据源相关属性
    private Properties properties;
    // 数据源对象
    private DataSource dataSource;
    // 连接对象
    Connection connection;

    /**
     * 初始化Druid数据源及数据库连接
     *
     * @throws Exception 当加载属性文件或创建数据源过程中发生异常时抛出
     */
    public void init() throws Exception {
        // 创建并初始化数据源属性集合
        this.properties = new Properties();

        // 从类路径下加载 'application.properties' 文件中的数据库连接属性
        this.properties.load(Sever.class.getResourceAsStream("application.properties"));

        // 使用DruidDataSourceFactory根据属性集合创建并配置数据源
        this.dataSource = DruidDataSourceFactory.createDataSource(properties);

        // 从数据源中获取数据库连接
        this.connection = dataSource.getConnection();
    }

    /**
     * 关闭当前持有的数据库连接
     *
     * @throws Exception 当关闭数据库连接时发生异常时抛出
     */
    public void close() throws Exception {
        // 如果连接对象不为空，则关闭连接
        if (connection != null) {
            connection.close();
        }
    }
}
